namespace EFS.Common.Values.Interfaces
{
	/// Values interface
	public interface Value : EFS.Common.Serialization.ISerializable, System.IComparable
	{
		/// Check null specified
		System.Boolean IsNullSpecified { get; }
		
		/// Property InnerObjectType
		System.Type InnerObjectType { get; }

		/// <summary>
		/// Set null specified
		/// </summary>
		void SetNullSpecified();

		/// check null
		System.Boolean IsNull { get; }

		/// Reset innerValue value
		void SetNull();

		/// Indicator
		System.Int32 Indicator { get; }

		/// Copy value
		void Copy(EFS.Common.Values.Interfaces.Value value);

		// set as string
		void SetString(System.String valueAsString);

		/// IsAssignableFrom
		System.Boolean IsAssignableFrom(System.Type type);

		/// Property Inner
		System.Object InnerObject { get; set; }

		/// Property Default
		System.Object Default { get; }
	}

}